package com.freesky.biz.rights.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.freesky.common.core.domain.BaseEntity;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;

@Data
@TableName("tec_rights_busi")
public class RightsBusiEntity extends BaseEntity {

    @TableId
    private String id;

    @NotBlank(message = "业务名称不能为空")
    @Size(min = 1, max = 64, message = "业务名称的长度为0-64个字符")
    private String busiName;

    /**
     * ICBC，工行，PSBC，邮储，ABC、农行，CITIC,中信，OTHER、其他
     */
    @NotBlank(message = "归属银行不能为空")
    private String belongBank;

    /**
     * 所属渠道
     */
    @NotBlank(message = "所属渠道不能为空")
    private String channelId;

    /**
     * 所属渠道
     */
    @TableField(exist = false)
    private String channelName;

    /**
     * 发布平台：1001、通用微信登陆，1101、工行E生活，1102、工行掌银、1201、农行掌银，1301、中信掌银，1401、邮储掌银、1501、其他
     */
    @NotBlank(message = "发布平台不能为空")
    private String platform;

    /**
     * 业务类型，1、领券，2、抽奖，3、线下扫码，4、券码
     */
    @NotBlank(message = "业务类型不能为空")
    private String busiType;

    /**
     * 有效期，开始时间，格式是：yyyy-MM-dd HH:mm:ss
     */
    @NotNull(message = "开始时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /**
     * 有效期，结束时间，格式是：yyyy-MM-dd HH:mm:ss
     */
    @NotNull(message = "结束时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /**
     * 时间类型：
     *  0、以有效期时间为准，
     *  D、按天开启，即每天几点到几点，
     *  W：以周为单位，即每周几，几点到几点，
     *  M：以月为单位，每月几号到几号，然后几点到几点
     */
    @NotBlank(message = "时间类型不能为空")
    private String timeType;

    /**
     * 天数，timeType的值：
     *  D：为空
     *  W：1、星期一，2、星期二，3、星期三，4、星期四、5、星期五，6、星期六，7、星期日
     *  M：1--31，代表1号到31号
     *  1,2,3,4,
     */
    private String timeDays;

    /**
     * 每天开始时间，默认是：00:00:00
     */
    private String daysStart;

    /**
     * 每天结束时间，默认是：23:59:59
     */
    private String daysEnd;

    /**
     * 9999999,次
     */
    @NotNull(message = "总券数不能为空")
    private Integer totalCoupons;

    private Integer usedCoupons;

    /**
     * 领取限定：1、业务有效期，2、按周期限定，3、按配置权益类别限定，8、以权益配置的活动为准，9、不限定
     */
    @NotNull(message = "领取限定不能为空")
    private String limitReceiveType;

    /**
     * 允许领取券数，不限定可以设为数值较高，如99
     */
    @NotNull(message = "允许领取券数不能为空")
    private Integer allowReceiveNum;

    /**
     * 领取客户类型，10、工行信用卡白名单，11、导入名单，99、不限定
     */
    @NotBlank(message = "领取客群不能为空")
    private String receiveCustType;

    /**
     * 排除领取的用户，即参加过的业务，不能参加本次业务
     */
    private String excludeBusiId;

    /**
     * 业务状态：1、上架，2、下架
     */
    @NotBlank(message = "业务状态不能为空")
    private String status;

    private String delFlag;

    /**
     * 审核状态：0、未审核，1、审核通过，2、审核不通过
     */
    private String auditFlag;

    /**
     * 审核原因
     */
    private String auditReason;
}
